home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / tutorial / tutorial.lha / et++-tutorial / scripts / etman < prev   
Text File  |  1992-01-24  |  7KB  |  191 lines

  1. #!/usr/bin/ksh
  2. #
  3. # Script fuer Suche in ET++ Manuals
  4. #
  5. # SWS T24 fuer Abschlussarbeit 12 ET++ Tutorial
  6. # Version:  1.1    18.12.91  H.Sch.
  7. #
  8. #
  9. etmanpath=${ET_DIR}/man
  10. etmanpath1=${etmanpath}/man1
  11. #
  12. #Suche in ET++ Manuals nach Begriff, Gross- Kleinschreibung nicht beachten
  13. #Es wird zuerst in den Filenamen gesucht und falls dort nichts gefunden wird,
  14. #wird die Suche im Manualinhalt fortgesetzt. Durch Eingabe der gewuenschten
  15. #Filenamen-Zeilennummer wird 'man' gestartet.
  16. #Aufruf:   etman PATTERN [-d,s,e,f,x,r]     (etman executable machen, nicht '. etman')
  17. #                PATTERN: Suchbegriff, Gross- Kleinschreibung wird ignoriert
  18. #                Options: d display Filenamen in denen Begriff vorkommt,
  19. #                           suche in Filenamen und Manualinhalt
  20. #                         s wie d, jedoch nur in Filenamen suchen (short)
  21. #                         e exact ending, d.h. es wird nur am Filenamenende 
  22. #                           (nicht im Manualinhalt) gesucht
  23. #                           und 'man' unmittelbar aufgerufen
  24. #                         x exact match, wie -e, der Filename muss aber mit
  25. #                           dem GesamtPattern uebereinstimmen
  26. #                         f first match, unmittelbar 'man' aufrufen, es wird
  27. #                           auch im Manualinhalt gesucht
  28. #              r recover from last search, d.h. Fileliste des letzten
  29. #                Suchvorganges verwenden. Aufruf: 'etman -r'
  30. #                   
  31. #Temp. Files--------
  32. #
  33. #===Bei Bedarf abaendern, jedoch kein global fuer mehrere User zugaengliches directory verwenden=====
  34. #
  35. fileliste1=~/et1.tmp
  36. fileliste2=~/et2.tmp
  37. fileliste3=~/et3.tmp
  38. fileliste4=~/et4.tmp
  39. zeilennr=~/et5.tmp
  40. saveliste=~/et6.tmp
  41. #
  42. paranz=$#
  43.  
  44. #ordne Parameterreihenfolge-------------------
  45. pattern=$1
  46. opt=$2
  47. if [ $# -ge 2 ] && [ ! "$(echo $2 | cut -c1)" = "-" ] && [ "$(echo $1 | cut -c1)" = "-" ] ;then
  48.   pattern=$2
  49.   opt=$1
  50. fi
  51. if [ $# -le 1 ] ;then
  52.   opt="-v"
  53. fi
  54. if [ $# -eq 1 ] && [ "$1" = "-r" ] ;then
  55.   opt="-r"
  56. fi
  57. if [ "$opt" = "-e" ] || [ "$opt" = "-f" ] || [ "$opt" = "-x" ]  ;then
  58.   execute="y"
  59. else
  60.   execute="n"
  61. fi
  62.  
  63. if [ $paranz -lt 1 ] || [ $paranz -gt 2 ] ;then
  64.  echo "ET++ man und apropos   etman PATTERN [-d]   :-d display Files in denen PATTERN vorkommt" 
  65.  echo "                                     [-s]   :-s display Files, short search"
  66.  echo "  (PATTERN: ignore case)             [-f]   :-f first match execute"
  67.  echo "                                     [-e]   :-e exact ending match execute, ignore case"
  68.  echo "                                     [-x]   :-x exact match, ignore case"
  69.  echo "                                     [  ]   :   execute durch Zeilennr. Angabe"
  70.  echo "                                etman -r    :-r recover from last search"
  71. else
  72.  
  73. #Suche Begriff in Manual-Filenamen--------------------
  74.   if [ ! "$opt" = "-r" ] ;then
  75.     echo "Suche Begriff in ET++ Manual-Filenamen"
  76.     rm $fileliste1 2> /dev/null 1> /dev/null
  77.     #suche passende Filenamen und schneide '.1' am Filenamenende ab
  78.     ls $etmanpath1 | grep -i $pattern | sed -e "s/\(.*\)\(\.1\)\$/\1/g" > $fileliste1
  79.     if [ -s $fileliste1 ] ;then
  80.        cp $fileliste1 $saveliste
  81.        if [ "$execute" = "n" ] ;then
  82.          pr -n2 -b -t $fileliste1 | more
  83.        else
  84.          pr -n2 -b -t $fileliste1
  85.        fi
  86.     fi
  87.   else
  88.     #recover mit altem Suchinhalt
  89.     cp $saveliste  $fileliste1 2> /dev/null 1> /dev/null    
  90.     if [ -s $fileliste1 ] ;then
  91.       echo "Ergebnis des letzten Suchvorganges"
  92.       pr -n2 -b -t $fileliste1 | more
  93.     else
  94.       echo "kein letzter Suchvorgang vorhanden"
  95.       opt="-s"
  96.     fi
  97.   fi
  98.  
  99.  
  100.   #Suche Begriff im Manual-Inhalt-------------------------
  101.   if [ ! -s $fileliste1 ] && [ ! "$opt" = "-s" ] && [ ! "$opt" = "-e" ] &&[ ! "$opt" = "-x" ] ;then 
  102.    echo "Suche Begriff in ET++ Manuals"
  103.    rm $zeilennr 2> /dev/null 1> /dev/null
  104.    echo "" > $zeilennr
  105.    if [ "$opt" = "-v" ] ;then
  106.       echo -n "Suche im Manualinhalt fortsetzen ? RETURN fuer ja, sonst n >>"
  107.       line > $zeilennr
  108.    fi
  109.    if [ -z "$(cat $zeilennr)" ]  ;then 
  110.         rm $fileliste1
  111.         rm $fileliste2 2> /dev/null 1> /dev/null
  112.         rm $fileliste3 2> /dev/null 1> /dev/null
  113.         rm $fileliste4 2> /dev/null 1> /dev/null
  114.         < /dev/null
  115.         find $etmanpath1 "*" -exec grep -i -l $pattern {} \; > $fileliste4 2> /dev/null
  116.         #hole Filenamen aus Pfadnamen und schneide '.1' am Ende ab
  117.         sed -e "s/\(.*\/man1\/\)\(.*\)/\2/g" $fileliste4 | sed -e "s/\(.*\)\(\.1\)\$/\1/g" > $fileliste1
  118.         if [ -s $fileliste1 ] ;then
  119.           cp $fileliste1 $saveliste
  120.           if [ "$execute" = "n" ] ;then
  121.             pr -n2 -b -t $fileliste1 | more
  122.           else
  123.             pr -n2 -b -t $fileliste1
  124.           fi
  125.         fi   
  126.    fi
  127.   fi
  128.  
  129.   #Fuehre Zeile aus falls nicht nur Display---------------------
  130.   rm $fileliste4 2> /dev/null 1> /dev/null
  131.   if [ ! "$opt" = "-d" ] && [ ! "$opt" = "-s" ] && [ -s $fileliste1 ]
  132.   then
  133.     if [ "$execute" = "n" ] ;then
  134.       #Zeilennummer auswaehlen
  135.       echo -n "Nr der gewuenschten Zeile angeben  >> " 
  136.       rm $zeilennr 2> /dev/null 1> /dev/null
  137.       line > $zeilennr
  138.       sed -e "s/[a-z,A-Z]/0/g" $zeilennr > $fileliste4
  139.       cp $fileliste4 $zeilennr
  140.       rm $fileliste4
  141.       cat $fileliste1 | wc -l > $fileliste4
  142.       if [ -z "$(cat $zeilennr)" ] || [ $(cat $zeilennr) -gt $(cat $fileliste4) ] ;then
  143.          echo "0" > $zeilennr
  144.       fi
  145.       tail +$(cat $zeilennr)l $fileliste1 > $fileliste2
  146.     else
  147.       #execute machting line directly
  148.       cp $fileliste1 $fileliste2
  149.       echo "1" > $zeilennr
  150.       echo "1" > $fileliste4
  151.     fi
  152.  
  153.     #Exact match des pattern oder match am Zeilenende-----------
  154.     if [ "$opt" = "-e" ] || [ "$opt" = "-x" ] ;then
  155.      if [ "$opt" = "-e" ] ;then
  156.       rm $fileliste1
  157.       grep -i $pattern\$ $fileliste2 | tee $fileliste1 | line > $fileliste3
  158.       if [ $(wc -l <$fileliste1) -gt 1 ] ;then
  159.         echo "WARNING: keine eindeutige Auswahl moeglich, keine Option statt -e angeben"
  160.       fi
  161.       if [ -z "$(cat $fileliste3)" ] ;then
  162.         echo "WARNING: keine Uebereinstimmung am Zeilenende, keine Option statt -e angeben"
  163.       fi
  164.      else
  165.       fgrep -ix $pattern $fileliste2  | line > $fileliste3
  166.       if [ -z "$(cat $fileliste3)" ] ;then
  167.         echo "WARNING: keine Gesamtuebereinstimmung des Suchbegriffes, keine Option statt -x angeben"
  168.       fi
  169.      fi
  170.       rm $zeilennr 1> /dev/null 2> /dev/null
  171.       rm $fileliste4 1> /dev/null 2> /dev/null
  172.       echo "1" > $zeilennr
  173.       echo "1" > $fileliste4
  174.     else
  175.       cat $fileliste2 | line  > $fileliste3
  176.     fi
  177.  
  178.  
  179.     # man aufrufen -----------
  180.     if test  $(cat $zeilennr) -gt 0 -a -s $fileliste3 -a ! -z "$(cat $fileliste3)" ;then    
  181.       man -P $etmanpath $(cat $fileliste3) | less
  182.     fi
  183.   fi
  184.   # Bereinigungen --------------
  185.   rm $fileliste1 2> /dev/null 1> /dev/null
  186.   rm $fileliste2 2> /dev/null 1> /dev/null
  187.   rm $fileliste3 2> /dev/null 1> /dev/null
  188.   rm $fileliste4 2> /dev/null 1> /dev/null
  189.   rm $zeilennr 2> /dev/null 1> /dev/null
  190. fi
  191.